package tds.model15.version2;

import java.util.ArrayList;
import java.util.List;

/**
 * @Company 杭州先锋电子技术股份有限公司
 * @ClassName Subject
 * @Description 主题，抽象通知者
 * @author tds
 * @Date 2020/1/31 16:48
 * @version 1.0.0
 */
public abstract class Subject {

    /**
     * 观察者集合
     */
    private List<Observer> observers = new ArrayList<>();

    public void setSubjectState(String subjectState) {
        this.subjectState = subjectState;
    }

    public String getSubjectState() {
        return subjectState;
    }

    /**
     * 观察者状态
     */
    private String subjectState;

    /**
     * @Description 增加观察者
     * @param observer
     * @return boolean
     */
    public synchronized boolean attach(Observer observer){
        return observers.add(observer);
    }

    /**
     * @Description 删除观察者
     * @param observer
     * @return boolean
     */
    public synchronized boolean detach(Observer observer){
        return observers.remove(observer);
    }

    /**
     * @Description 通知所有观察者
     * @param
     * @return void
     */
    public void notifyObservers(){
        for(Observer observer : observers){
            observer.update();
        }
    }
}
